Package: quantmod

author: Zhao Sibo,Deng YiQun,Long Xicheng


quantmod是R中的一个专注金融量化投资分析的包,其提供了一个简单的量化投资分析一体化解决方案,能够帮助用户完成提取数据、数据重整、金融建模、交易回测和模型可视化等诸多环节。

一、ETL类函数

(一)常用的数据类型

数据类型 介绍
zoo 包括索引、日期、时间,只依赖于基础的R环境,用于描述规则的和不规则的有序的时间序列数据
xts xts是对时间序列数据(zoo)的一种扩展实现,目标是为了统一时间序列的操作接口。实际上,xts类型继承了zoo类型,丰富了时间序列数据处理的函数,API定义更贴近使用者,更实用,更简单

(二)ETL类函数

函数 作用 函数 作用
getSymbols() 从多种信息源里获得信息 getSymbols.csv() 从csv文件中读入数据
getDividends() 获取上市公司的股息数据 getSymbols.FRED() 从FRED中获取数据
getFinancials() 获取上市公司的财务报表 getSymbols.goole() 从google中获取数据
getFX() 获取汇率数据 getSymbols.MySQL 从MySQL中获取数据
getMetals() 获取重金属交易数据 getSymbols.oanda() 从oanda中获取数据
getSplits 获取上市公司的拆股数据 getSybols.rda() 从R的二进制文件获取数据
getOptionChain() 获取期权交易数据 getSymbols.SQLite() 从SQLite数据库中获取数据
getQuote() 获取即时的网络报价 getSymbols.yahoo() 从雅虎网中获取数据

1.getSymbols函数

获取上市公司股票的日交易数据

   getSymbols("EDU",src = "yahoo",from="2013-8-20",to="2013-9-02")
## [1] "EDU"
   class(EDU)
## [1] "xts" "zoo"
   pander::pander(EDU,split.cells = 4)
Table continues below
Period EDU.Open EDU.High EDU.Low EDU.Close EDU.Volume
2013/08/20 00时00分00秒 22.31 22.52 22.08 22.44 680300
2013/08/21 00时00分00秒 22.24 22.69 22.17 22.58 969800
2013/08/22 00时00分00秒 22.69 23.29 22.5 23.1 911300
2013/08/23 00时00分00秒 23.06 23.12 22.75 23 647000
2013/08/26 00时00分00秒 23 23.24 22.76 23.06 732200
2013/08/27 00时00分00秒 22.76 22.79 22.31 22.38 2145100
2013/08/28 00时00分00秒 22.18 22.41 21.66 21.95 666300
2013/08/29 00时00分00秒 21.89 22.15 21.71 21.88 876800
2013/08/30 00时00分00秒 21.91 21.91 20.91 21.23 1171500
EDU.Adjusted
21.51
21.64
22.14
22.05
22.1
21.45
21.04
20.97
20.35

环境参数的介绍 在全局环境下新建容器,容器是存放对象的。对象的名称是new.environment。通过ls()列出new.environment容器下AAPL变量值。 获取数据,并将获取后的记录放到AAPL中。AAPL通过env参数指定容器。通过get()获取new.environment容器下AAPL变量值。

  new.environment=new.env()
  getSymbols("AAPL",env=new.environment,scr="yahoo",from="2013-10-01",to="2013-10-10")
## [1] "AAPL"
  ls(envir=new.environment)
## [1] "AAPL"
  pander::pander(head( new.environment[["AAPL"]]),split.cells = 3)
Table continues below
Period AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
2013/10/01 00时00分00秒 68.35 69.88 68.34 69.71 88470900
2013/10/02 00时00分00秒 69.38 70.26 69.11 69.94 72296000
2013/10/03 00时00分00秒 70.07 70.34 68.68 69.06 80688300
2013/10/04 00时00分00秒 69.12 69.23 68.37 69 64717100
2013/10/07 00时00分00秒 69.51 70.38 69.34 69.68 78073100
2013/10/08 00时00分00秒 69.99 70.09 68.65 68.71 72729300
AAPL.Adjusted
62.55
62.76
61.97
61.92
62.53
61.65
名称 作用
Symbols 要抓取的股票的名称或代码
env 创建对象的位置,即是创建对象放置的环境
reload.Symbols 是否在制定环境中重新载入现有数据,默认为否
warnings 是否输出警告信息,默认为否
src 指定抓取数据的网页,默认为yahoo,可更改为google

获取各种指数的日数据,例如获取沪深300指数的日数据,它的代码为00300.ss,后面的字母表示该指数从属哪个交易所。

  getSymbols("000300.ss",env=new.environment,scr ="yahoo",from="2013-10-01",to="2013-12-10")
## [1] "000300.ss"
  ls(envir = new.environment)
## [1] "000300.SS" "AAPL"
  pander::pander(head(new.environment[["000300.SS"]]),split.cells =3)
Table continues below
Period 000300.SS.Open 000300.SS.High 000300.SS.Low
2013/10/08 00时00分00秒 2442 2442 2442
2013/10/09 00时00分00秒 2454 2454 2454
2013/10/10 00时00分00秒 2429 2429 2429
2013/10/11 00时00分00秒 2469 2469 2469
2013/10/14 00时00分00秒 2473 2473 2473
2013/10/15 00时00分00秒 2468 2468 2468
000300.SS.Close 000300.SS.Volume 000300.SS.Adjusted
2442 0 2442
2454 0 2454
2429 0 2429
2469 0 2469
2473 0 2473
2468 0 2468

2.getFX() 函数

从oanda上获取汇率

#getFX("HKD/USD",from="2019-06-20",env=new.environment)|被墙|

3.getFianacials()函数

从Google Finance上下载财务报表,其中包括IS/BS/CF,“Q”代表季度的数据

#getFinancials("AAPL")|Google Finance stopped providing data in March, 2018.|

4.getDividends

getDividends("AAPL",env = new.environment,from =" 2012-01-01",to="2013-10-25",vrobose=TRUE)
##              AAPL.div
## 2012-08-09 0.05408143
## 2012-11-07 0.05408143
## 2013-02-07 0.05408143
## 2013-05-09 0.06224429
## 2013-08-08 0.06224429

二、分析类函数

(一)列名函数

提取某种类型

数据类型 全称 意义
Op Open price 开盘价
Hi High price 最高价
Lo Low price 最低价
Cl Close price 收盘价
Vo Volume 交易量
Ad Adjusted price 调整价格
HLC Hi,Lo,Cl 最高价、最低价和收盘价
OHLC Op,Hi,Lo,Cl 开盘价、最高价、最低价和收盘价
  getSymbols("AAPL",from="2013-09-01", to="2013-09-20")
## [1] "AAPL"
  Op(AAPL)
##            AAPL.Open
## 2013-09-03  70.44286
## 2013-09-04  71.36571
## 2013-09-05  71.46429
## 2013-09-06  71.20571
## 2013-09-09  72.14286
## 2013-09-10  72.31428
## 2013-09-11  66.71571
## 2013-09-12  66.92857
## 2013-09-13  67.04857
## 2013-09-16  65.85714
## 2013-09-17  63.99429
## 2013-09-18  66.16857
## 2013-09-19  67.24286
  Lo(AAPL)
##            AAPL.Low
## 2013-09-03 69.62143
## 2013-09-04 70.89714
## 2013-09-05 70.52000
## 2013-09-06 69.99286
## 2013-09-09 71.92571
## 2013-09-10 69.92857
## 2013-09-11 66.40143
## 2013-09-12 66.57286
## 2013-09-13 66.38571
## 2013-09-16 63.88857
## 2013-09-17 63.92857
## 2013-09-18 65.80857
## 2013-09-19 67.03571
  new.environment=new.env()
  getSymbols(c("BABA", "BIDU", "JD"), src = "yahoo", env = new.environment, 
  from = "2019-01-01", to = "2019-01-10")#抓取三家企业的股票交易数据
## [1] "BABA" "BIDU" "JD"
  m <- cbind(Ad(get("BABA", env = new.environment)), Ad(get("BIDU", env = new.environment)),
  Ad(get("JD", env = new.environment)))#汇总三家企业的股票调整价格
  m
##            BABA.Adjusted BIDU.Adjusted JD.Adjusted
## 2019-01-02        136.70        162.25       21.27
## 2019-01-03        130.60        154.71       20.35
## 2019-01-04        139.75        160.95       22.27
## 2019-01-07        143.10        162.60       22.76
## 2019-01-08        146.79        163.40       22.95
## 2019-01-09        151.92        166.64       23.69
getSymbols("JD",scr ="yahoo",from ="2019-06-01",to ="2019-10-01")
## [1] "JD"
  #seriesLo和seriesHi将分别返回给定系列的低值和高值
  seriesHi(Op(JD))
##            JD.Open
## 2019-07-25   32.04
  seriesLo(Op(JD))
##            JD.Open
## 2019-06-03   25.81
  a=data.frame(name=c(1:5),high=c(1:5),low=c(1:5))
  for (i in 1:5) {
    a[i,1]=names(JD[0,i])
    a[i,2]=max(JD[,i])
    a[i,3]=round(min(JD[,i]),2)
  }
  print(a)
##        name        high        low
## 1   JD.Open       32.04      25.81
## 2   JD.High       32.38      26.38
## 3    JD.Low       31.68      25.50
## 4  JD.Close       32.20      25.76
## 5 JD.Volume 46127300.00 5066100.00
  #seriesAccel,seriesDecel,seriesIncr和seriesDecr,返回一个逻辑向量,该逻辑向量指示序列是加速   ,减速,增加还是减少。
  seriesDecr(AAPL)
##            AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
## 2013-09-03        NA        NA       NA         NA          NA
## 2013-09-04     FALSE     FALSE    FALSE      FALSE       FALSE
## 2013-09-05     FALSE      TRUE     TRUE       TRUE        TRUE
## 2013-09-06      TRUE      TRUE     TRUE      FALSE       FALSE
## 2013-09-09     FALSE     FALSE    FALSE      FALSE        TRUE
## 2013-09-10     FALSE      TRUE     TRUE       TRUE       FALSE
## 2013-09-11      TRUE      TRUE     TRUE       TRUE       FALSE
## 2013-09-12     FALSE     FALSE    FALSE      FALSE        TRUE
## 2013-09-13     FALSE      TRUE     TRUE       TRUE        TRUE
## 2013-09-16      TRUE      TRUE     TRUE       TRUE       FALSE
## 2013-09-17      TRUE      TRUE    FALSE      FALSE        TRUE
## 2013-09-18     FALSE     FALSE    FALSE      FALSE       FALSE
## 2013-09-19     FALSE     FALSE    FALSE      FALSE        TRUE
##            AAPL.Adjusted
## 2013-09-03            NA
## 2013-09-04         FALSE
## 2013-09-05          TRUE
## 2013-09-06         FALSE
## 2013-09-09         FALSE
## 2013-09-10          TRUE
## 2013-09-11          TRUE
## 2013-09-12         FALSE
## 2013-09-13          TRUE
## 2013-09-16          TRUE
## 2013-09-17         FALSE
## 2013-09-18         FALSE
## 2013-09-19         FALSE
  seriesAccel(AAPL)
##            AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
## 2013-09-03        NA        NA       NA         NA          NA
## 2013-09-04        NA        NA       NA         NA          NA
## 2013-09-05     FALSE     FALSE    FALSE      FALSE       FALSE
## 2013-09-06     FALSE      TRUE    FALSE       TRUE        TRUE
## 2013-09-09      TRUE      TRUE     TRUE       TRUE       FALSE
## 2013-09-10     FALSE     FALSE    FALSE      FALSE        TRUE
## 2013-09-11     FALSE     FALSE    FALSE      FALSE       FALSE
## 2013-09-12      TRUE      TRUE     TRUE       TRUE       FALSE
## 2013-09-13     FALSE     FALSE    FALSE      FALSE        TRUE
## 2013-09-16     FALSE     FALSE    FALSE      FALSE        TRUE
## 2013-09-17     FALSE      TRUE     TRUE       TRUE       FALSE
## 2013-09-18      TRUE      TRUE     TRUE       TRUE        TRUE
## 2013-09-19     FALSE      TRUE    FALSE      FALSE       FALSE
##            AAPL.Adjusted
## 2013-09-03            NA
## 2013-09-04            NA
## 2013-09-05         FALSE
## 2013-09-06          TRUE
## 2013-09-09          TRUE
## 2013-09-10         FALSE
## 2013-09-11         FALSE
## 2013-09-12          TRUE
## 2013-09-13         FALSE
## 2013-09-16         FALSE
## 2013-09-17          TRUE
## 2013-09-18          TRUE
## 2013-09-19         FALSE
  Delt(Lo(AAPL))   #计算最低价的变化率
##            Delt.1.arithmetic
## 2013-09-03                NA
## 2013-09-04      0.0183235538
## 2013-09-05     -0.0053195939
## 2013-09-06     -0.0074750145
## 2013-09-09      0.0276150171
## 2013-09-10     -0.0277666903
## 2013-09-11     -0.0504392668
## 2013-09-12      0.0025817668
## 2013-09-13     -0.0028111906
## 2013-09-16     -0.0376156092
## 2013-09-17      0.0006260431
## 2013-09-18      0.0294078375
## 2013-09-19      0.0186471455
  Delt(Hi(AAPL))   #计算最高价的变化率
##            Delt.1.arithmetic
## 2013-09-03                NA
## 2013-09-04      0.0032761428
## 2013-09-05     -0.0031061524
## 2013-09-06     -0.0025964789
## 2013-09-09      0.0171012345
## 2013-09-10     -0.0009252894
## 2013-09-11     -0.0665287735
## 2013-09-12      0.0036099602
## 2013-09-13     -0.0075093923
## 2013-09-16     -0.0216604317
## 2013-09-17     -0.0041159595
## 2013-09-18      0.0144438664
## 2013-09-19      0.0203280989

(二)is 族函数

判断某数据是否是某类型的数据

is.OHLC() --Open price,High price,Low price Close price 开盘价,最高价,最低价和收盘价
is.OHLCV() --V 交易量
is.BBO()
is.TBBO()
is.HLC()
  is.OHLCV(AAPL)
## [1] TRUE
  #以下证明OHLCV是一个并的判断
  a=AAPL[,-5]
  is.OHLCV(a)
## [1] FALSE

(三)has 族函数

检查数据里面是否包含某类型的数据

has.OHLC()
has.HLC()
has.OHLCV()
has.Op()
has.Hi()
has.Lo()
has.Cl()
has.Vo()
has.Ad()
has.Ask()
has.Bid()
has.Price()
has.Qty()
has.Trade()
  #检查数据里面包含某种数据类型

  has.Op(AAPL)    #是否包含开盘价
## [1] TRUE
  has.OHLC(AAPL)  #是否包含开盘价,最高价,最低价,收盘价
## [1] TRUE TRUE TRUE TRUE
  has.OHLC(AAPL,which=FALSE)
## [1] TRUE TRUE TRUE TRUE
  has.OHLC(AAPL,which=TRUE)  #返回对应数据类型所在位置
## [1] 1 2 3 4

(四)计算函数

函数 描述
Delt() 计算变化率
Lag() 求滞后K期
Next() 所有观测值的值前进k个单位
periodReturn() 计算不同阶段的收益率
dailyReturn() 计算日收益率
weeklyReturn() 计算周收益率
monthlyReturn() 计算月收益率
quarterlyReturn() 计算季度收益率
annualReturn() 计算年化收益率
yearlyReturn() 计算年收益率
allReturn() 各种收益率汇总

Delt()函数 主要是用来计算一个序列的一个阶段到另一个阶段的变化率或者计算两个序列之间的变化率

参数 描述
基本格式 Delt(x1, x2 = NULL, k = 0, type = c(“arithmetic”, “log”))
x1,x2 比较的对象变量
k 相差时期数
arithmetic (x2(t) - x1(t-k))/x1(t-k)
log log(x2(t)/x1(t-k))
  Delt(Op(AAPL),k=2,type=("arithmetic"))#算数
##            Delt.2.arithmetic
## 2013-09-03                NA
## 2013-09-04                NA
## 2013-09-05       0.014500136
## 2013-09-06      -0.002242029
## 2013-09-09       0.009495274
## 2013-09-10       0.015568611
## 2013-09-11      -0.075227763
## 2013-09-12      -0.074476447
## 2013-09-13       0.004989154
## 2013-09-16      -0.016008618
## 2013-09-17      -0.045553291
## 2013-09-18       0.004728887
## 2013-09-19       0.050763485
  Delt(Op(AAPL),type=("log"))#对数
##              Delt.1.log
## 2013-09-03           NA
## 2013-09-04  0.013015744
## 2013-09-05  0.001380270
## 2013-09-06 -0.003624817
## 2013-09-09  0.013075294
## 2013-09-10  0.002373369
## 2013-09-11 -0.080581172
## 2013-09-12  0.003185474
## 2013-09-13  0.001791276
## 2013-09-16 -0.017929417
## 2013-09-17 -0.028694052
## 2013-09-18  0.033411794
## 2013-09-19  0.016105235
  #(收盘价-开盘价)/开盘价
  Delt(Op(AAPL),Cl(AAPL))
##            Delt.0.arithmetic
## 2013-09-03      -0.009166494
## 2013-09-04      -0.001741494
## 2013-09-05      -0.009955098
## 2013-09-06      -0.000441327
## 2013-09-09       0.002316764
## 2013-09-10      -0.022836816
## 2013-09-11       0.001498867
## 2013-09-12       0.008943430
## 2013-09-13      -0.009460083
## 2013-09-16      -0.023600843
## 2013-09-17       0.016430045
## 2013-09-18       0.003238501
## 2013-09-19       0.003399156
  #计算函数的简化形式,可在OHLC.Transformations中查看
  OpCl(AAPL) 
##               OpCl.AAPL
## 2013-09-03 -0.009166494
## 2013-09-04 -0.001741494
## 2013-09-05 -0.009955098
## 2013-09-06 -0.000441327
## 2013-09-09  0.002316764
## 2013-09-10 -0.022836816
## 2013-09-11  0.001498867
## 2013-09-12  0.008943430
## 2013-09-13 -0.009460083
## 2013-09-16 -0.023600843
## 2013-09-17  0.016430045
## 2013-09-18  0.003238501
## 2013-09-19  0.003399156
  OpOp(AAPL)
##               OpOp.AAPL
## 2013-09-03           NA
## 2013-09-04  0.013100817
## 2013-09-05  0.001381223
## 2013-09-06 -0.003618255
## 2013-09-09  0.013161149
## 2013-09-10  0.002376188
## 2013-09-11 -0.077419987
## 2013-09-12  0.003190553
## 2013-09-13  0.001792881
## 2013-09-16 -0.017769641
## 2013-09-17 -0.028286288
## 2013-09-18  0.033976237
## 2013-09-19  0.016235623

Next()函数与Lag()函数 基本格式:Next(x, k = 1),Lag(x, k = 1),其中k代表提前或推后的时期数

  Stock.Close <- c(102.12,102.62,100.12,103.00,103.87,103.12,105.12)
  Close.Dates <- as.Date(c(10660,10661,10662,10665,10666,10667,10668),origin="1970-01-01")
  Stock.Close <- zoo(Stock.Close,Close.Dates)
  Stock.Close
## 1999-03-10 1999-03-11 1999-03-12 1999-03-15 1999-03-16 1999-03-17 
##     102.12     102.62     100.12     103.00     103.87     103.12 
## 1999-03-18 
##     105.12
  Next(Stock.Close) 
##              Next
## 1999-03-10 102.62
## 1999-03-11 100.12
## 1999-03-12 103.00
## 1999-03-15 103.87
## 1999-03-16 103.12
## 1999-03-17 105.12
## 1999-03-18     NA
  getSymbols("AMZN",from="2013-09-01", to="2013-09-10")
## [1] "AMZN"
  AMZN
##            AMZN.Open AMZN.High AMZN.Low AMZN.Close AMZN.Volume
## 2013-09-03    284.73    291.39   284.17     288.80     2897600
## 2013-09-04    288.33    295.23   287.58     293.64     2438600
## 2013-09-05    293.63    297.00   292.71     294.10     1816600
## 2013-09-06    295.33    298.88   290.80     295.86     2292000
## 2013-09-09    297.22    299.96   296.60     299.71     1643600
##            AMZN.Adjusted
## 2013-09-03        288.80
## 2013-09-04        293.64
## 2013-09-05        294.10
## 2013-09-06        295.86
## 2013-09-09        299.71
  #所有观测值的值前进k个单位
  Next(AMZN,2)
##              Next
## 2013-09-03 293.63
## 2013-09-04 295.33
## 2013-09-05 297.22
## 2013-09-06 297.00
## 2013-09-09 298.88

Return系列
periodReturn(x,
period=‘monthly’ 可选daily, weekly, monthly, quarterly, annual, yearly
subset=NULL, 指定区间
type=‘arithmetic’, 单利形式及复利形式
leading=TRUE, 去掉不完整区间
…)

  getSymbols("AAPL")
## [1] "AAPL"
  periodReturn(AAPL,period = "daily",subset = "2013-10-01::2013-10-23",type = "arithmetic")
##            daily.returns
## 2013-10-01  0.0235134231
## 2013-10-02  0.0032789224
## 2013-10-03 -0.0125622807
## 2013-10-04 -0.0007860429
## 2013-10-07  0.0097716536
## 2013-10-08 -0.0139621543
## 2013-10-09  0.0117478589
## 2013-10-10  0.0062681067
## 2013-10-11  0.0064741567
## 2013-10-14  0.0065542136
## 2013-10-15  0.0053221678
## 2013-10-16  0.0048728946
## 2013-10-17  0.0067649438
## 2013-10-18  0.0087017010
## 2013-10-21  0.0245043747
## 2013-10-22 -0.0028579483
## 2013-10-23  0.0097909112
  dailyReturn(AAPL,subset = "2013-10-01::2013-10-23")
##            daily.returns
## 2013-10-01  0.0235134231
## 2013-10-02  0.0032789224
## 2013-10-03 -0.0125622807
## 2013-10-04 -0.0007860429
## 2013-10-07  0.0097716536
## 2013-10-08 -0.0139621543
## 2013-10-09  0.0117478589
## 2013-10-10  0.0062681067
## 2013-10-11  0.0064741567
## 2013-10-14  0.0065542136
## 2013-10-15  0.0053221678
## 2013-10-16  0.0048728946
## 2013-10-17  0.0067649438
## 2013-10-18  0.0087017010
## 2013-10-21  0.0245043747
## 2013-10-22 -0.0028579483
## 2013-10-23  0.0097909112
  annualReturn(AAPL)   #yearly与annual计算结果一致
##            yearly.returns
## 2007-12-31     1.29551503
## 2008-12-31    -0.56911348
## 2009-12-31     1.46901001
## 2010-12-31     0.53067912
## 2011-12-30     0.25558031
## 2012-12-31     0.31399997
## 2013-12-31     0.05421202
## 2014-12-31     0.37724142
## 2015-12-31    -0.04638517
## 2016-12-30     0.10032299
## 2017-12-29     0.46114657
## 2018-12-31    -0.06789571
## 2019-10-14     0.49530866
  yearlyReturn(AAPL)
##            yearly.returns
## 2007-12-31     1.29551503
## 2008-12-31    -0.56911348
## 2009-12-31     1.46901001
## 2010-12-31     0.53067912
## 2011-12-30     0.25558031
## 2012-12-31     0.31399997
## 2013-12-31     0.05421202
## 2014-12-31     0.37724142
## 2015-12-31    -0.04638517
## 2016-12-30     0.10032299
## 2017-12-29     0.46114657
## 2018-12-31    -0.06789571
## 2019-10-14     0.49530866
  #leading的功能探究,去除不完整区间
  periodReturn(AAPL,period='monthly',subset='2007-01-01::2007-12-05',leading = FALSE)
##            monthly.returns
## 2007-01-31              NA
## 2007-02-28    -0.013064271
## 2007-03-30     0.098097127
## 2007-04-30     0.074157809
## 2007-05-31     0.214328635
## 2007-06-29     0.007013805
## 2007-07-31     0.079645992
## 2007-08-31     0.051001875
## 2007-09-28     0.108246645
## 2007-10-31     0.237701150
## 2007-11-30    -0.040694894
  #把2017年1月的收益率根据一月末收盘价相对一月初开盘价的变化率
  periodReturn(AAPL,period='monthly',subset='2007-01-01::2007-12-05',leading = TRUE)
##            monthly.returns
## 2007-01-31    -0.006489744
## 2007-02-28    -0.013064271
## 2007-03-30     0.098097127
## 2007-04-30     0.074157809
## 2007-05-31     0.214328635
## 2007-06-29     0.007013805
## 2007-07-31     0.079645992
## 2007-08-31     0.051001875
## 2007-09-28     0.108246645
## 2007-10-31     0.237701150
## 2007-11-30    -0.040694894
  yearlyReturn(AAPL,leading=FALSE)
##            yearly.returns
## 2007-12-31             NA
## 2008-12-31    -0.56911348
## 2009-12-31     1.46901001
## 2010-12-31     0.53067912
## 2011-12-30     0.25558031
## 2012-12-31     0.31399997
## 2013-12-31     0.05421202
## 2014-12-31     0.37724142
## 2015-12-31    -0.04638517
## 2016-12-30     0.10032299
## 2017-12-29     0.46114657
## 2018-12-31    -0.06789571
## 2019-10-14     0.49530866
  first(allReturns(AAPL),5)
##                   daily      weekly monthly quarterly yearly
## 2007-01-03           NA          NA      NA        NA     NA
## 2007-01-04  0.022195679          NA      NA        NA     NA
## 2007-01-05 -0.007121188 -0.01437016      NA        NA     NA
## 2007-01-08  0.004938272          NA      NA        NA     NA
## 2007-01-09  0.083070106          NA      NA        NA     NA
  last(allReturns(AAPL),5)
##                   daily       weekly    monthly  quarterly    yearly
## 2019-10-08 -0.011714983           NA         NA         NA        NA
## 2019-10-09  0.011720165           NA         NA         NA        NA
## 2019-10-10  0.013478382           NA         NA         NA        NA
## 2019-10-11  0.026598336  0.040526903         NA         NA        NA
## 2019-10-14 -0.001439448 -0.001439448 0.05313209 0.05313209 0.4953087

三、展现类函数

(一)基础图形的作图——条形图,蜡烛图,线图

作图函数 描述
chartTheme() 可以查看已有主题的参数或者量身订造一个有自己风格的图形主题
chartSeries() 主绘图软件,可以画出条形图,蜡烛图,线图
reChart() 可以在不重新画一张新图的前提下修改已经画出的图
barChart() 箱型图
candleChart() 蜡烛图
lineChart() 线图

chartTheme()

chartTheme参数 全称 作用
theme theme 主题颜色
fg.col foreground color 前景颜色
bg.col background color 背景颜色
grid.col grid color 网格颜色
border border color 边界颜色
up.col up bar/candle color 阳线颜色
dn.col down bar/candle color 阴线颜色
chartTheme("white")
## List of 24
##  $ fg.col      : chr "#000000"
##  $ bg.col      : chr "#F0F0F0"
##  $ grid.col    : chr "#CCCCCC"
##  $ border      : chr "#444444"
##  $ minor.tick  : chr "#888888"
##  $ major.tick  : chr "#000000"
##  $ up.col      : chr "#00CC00"
##  $ dn.col      : chr "#FF7700"
##  $ dn.up.col   : chr "#888888"
##  $ up.up.col   : chr "#FFFFFF"
##  $ dn.dn.col   : chr "#FF0000"
##  $ up.dn.col   : chr "#000000"
##  $ up.border   : chr "#444444"
##  $ dn.border   : chr "#444444"
##  $ dn.up.border: chr "#444444"
##  $ up.up.border: chr "#444444"
##  $ dn.dn.border: chr "#444444"
##  $ up.dn.border: chr "#444444"
##  $ main.col    : chr "#555555"
##  $ sub.col     : chr "#555555"
##  $ area        : chr "#FFFFFF"
##  $ fill        : chr "#F7F7F7"
##  $ Expiry      : chr "#C9C9C9"
##  $ theme.name  : chr "white"
##  - attr(*, "class")= chr "chart.theme"
chartTheme("white",up.col="blue",dn.col="red")
## List of 24
##  $ fg.col      : chr "#000000"
##  $ bg.col      : chr "#F0F0F0"
##  $ grid.col    : chr "#CCCCCC"
##  $ border      : chr "#444444"
##  $ minor.tick  : chr "#888888"
##  $ major.tick  : chr "#000000"
##  $ up.col      : chr "blue"
##  $ dn.col      : chr "red"
##  $ dn.up.col   : chr "#888888"
##  $ up.up.col   : chr "#FFFFFF"
##  $ dn.dn.col   : chr "#FF0000"
##  $ up.dn.col   : chr "#000000"
##  $ up.border   : chr "#444444"
##  $ dn.border   : chr "#444444"
##  $ dn.up.border: chr "#444444"
##  $ up.up.border: chr "#444444"
##  $ dn.dn.border: chr "#444444"
##  $ up.dn.border: chr "#444444"
##  $ main.col    : chr "#555555"
##  $ sub.col     : chr "#555555"
##  $ area        : chr "#FFFFFF"
##  $ fill        : chr "#F7F7F7"
##  $ Expiry      : chr "#C9C9C9"
##  $ theme.name  : chr "white"
##  - attr(*, "class")= chr "chart.theme"

chartseries()

chartseries参数 全称 作用
x an OHLC object - see details 对象
type style of chart to draw 画图类型
name name of chart 图表名称
subset xts style date subsetting argument 时间区间
show.grid display price grid lines 是否显示网格颜色
TA a vector of technical indicators and params, or character strings 增加的技术指标
strings TA字符串的TA分隔符
line.type type of line in line chart 线的类型 l线/p点/b点线
bar.type type of barchart - ohlc or hlc 柱状元素,是否包含开盘价
theme a chart.theme object 图默认板式
up.col up bar/candle color 阳线颜色
dn.col down bar/candle color 阴线颜色
color.vol color code volume? 交易量是否有颜色
multi.col 4 color candle pattern 四色蜡烛图板式

chartserises() 主绘图函数,可以画条形图,蜡烛图和线图

chartSeries(AAPL,name = "AAPLCHART",subset = "2013-10-01::2013-10-23")

chartSeries(AAPL,name = "AAPLCHART",subset = "2013-10-01::2013-10-23",theme = "white")

#适合印刷
chartSeries(AAPL,name = "AAPLCHART",subset = "2013-10-01::2013-10-23",theme = "white.mono")

chart_Series(AAPL,type = "auto",subset = "2013-10-01::2013-10-23")

chart_Series(AAPL,type = "candlesticks",subset = "2013-10-01::2013-10-23")

chart_Series(AAPL,type = "bar",subset = "2013-10-01::2013-10-23")

chart_Series(AAPL,type = "line",subset = "2013-10-01::2013-10-23")

chart_Series(AAPL,type = "matchsticks",subset = "2013-10-01::2013-10-23")

reChart() 可以在不重新再画一张新的图的前提下修改已经画出来的图

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-10-01::2013-10-23",type="candlesticks")

reChart(type = "bars",subset ="2013-10-01::2013-10-23" ,show.grid = TRUE)

barChart() barchar()特有的bartype

getSymbols("AAPL",scr="yahoo")
## [1] "AAPL"
barChart(AAPL,theme = "white")

barChart(AAPL,theme = "white",subset = "2012-12::2013")

barChart(AAPL,theme = "white",subset = "last 10 weeks")

barChart(AAPL,theme = "white",subset = "first 10 weeks")

#bartype
barChart(AAPL,theme = "white",subset = "first 10 weeks",bar.type = "ohlc")

barChart(AAPL,theme = "white",subset = "first 10 weeks",bar.type = "hlc")

#chartSeries(AAPL,name = "AAPLCHART",subset = "2013-10-01::2013-10-23",show.grid = FALSE,theme = "white",type = "bar",bar.type = "hlc")
#chartSeries(AAPL,name = "AAPLCHART",subset = "2013-10-01::2013-10-23",show.grid = FALSE,theme = "white",type = "bar",bar.type = "ohlc")

lineChart()

lineChart(AAPL,theme = "white",subset = "2013-10-01::2013-10-23",line.type = "l")

lineChart(AAPL,theme = "white",subset = "2013-10-01::2013-10-23",line.type = "p")

lineChart(AAPL,theme = "white",subset = "2013-10-01::2013-10-23",line.type = "b")

(二)技术分析图

技术分析图函数 描述
addADX() 平均趋向指标
addATR() 真实波动幅均值
addBBands() 布林线指标
addCCI() 超卖超卖指标
addCMF() 恰奇现金流
addCMO() 钱德动量摆动指标
addEMA() 指数平滑移动平均指标
addEnvelope() 包略线指标
addMACD() 异同移动平均线
addMomentum() 动量指标
addSAR() 抛物线转向指标
addSMA() 简单移动平均线
addDEMA() 双移动平均线
addExpiry 期权期货到期时间点
addDPO() 区间震荡线
addROC() 变动速率指标
addRSI() 相对强弱指标
addVo() 成交量指标
addWMA() 加权移动平均线
addWPR() 威廉指标

相关举例

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks",theme = "white")

addADX()

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks")

addBBands(n=14,sd=2,draw = "percent")

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks")

addBBands(n=14,sd=2,draw = "width")

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks")

addCCI()

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks")

addRSI()

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks")

addVo()

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks")

addWPR()

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks")

addSAR()

chartSeries(AAPL,name="AAPLBARCHART",subset="2013-08-01::2013-10-23",type="candlesticks")

addDPO()